package affarituoioop;

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {
        String[] scelte = {"Inizia a giocare", "Regolamento"};
        int continua = 0;
        String nome;
        nome = JOptionPane.showInputDialog("Inserire nome giocatore:");
        while (nome.isEmpty()) {
            nome = JOptionPane.showInputDialog("Inserire nome giocatore:");
        }
        String elencovincite="";
        int contagiocate=0;
        while (continua == 0) {
            Lista list = new Lista();
            String elenco;
            int regione;
            int regolamento = 1;
            while (regolamento == 1) {
                regolamento = JOptionPane.showOptionDialog(null, "Ciao "+nome+", benvenuto al gioco di Affari tuoi!", "Inizia", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, scelte, scelte[0]);
                if (regolamento == 1) {
                    JOptionPane.showMessageDialog(null, "Ci sono 20 regioni e 20 pacchi con relativi premi,\nda 0.01 € fino al premio più ambito, 500.000 €.\nDopo aver scelto la regione con la quale giocare si passerà a\nscoprire il valore del premio per eliminazione degli altri pacchi.\nDi tanto in tanto il Dottore vi farà l'offerta di cambiare il vostro pacco,\nma attenzione non sempre\nla sua offerta sarà vantaggiosa per voi!!\nSaprete resistere alla tentazione del mistero? ");
                }
            }
            list.assegnaPremi();
            elenco = list.getLista();
            String[] pacchi = list.getPacchi();
            regione = JOptionPane.showOptionDialog(null, "Con che regione vuoi giocare?\n\n" + elenco + "\n\n", "Scegli la regione", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, pacchi, pacchi[0]);
            regione = Integer.parseInt(pacchi[regione]);
            Pacco scelto = new Pacco();
            scelto = list.getPacco(regione);
            list.delPacco(scelto, 0);
            JOptionPane.showMessageDialog(null, "Ok, ora devi aprire i pacchi delle altre regioni!");
            boolean accettaofferta = false;
            String offerta = "";
            int offertaInt = 0;
            for (int i = 0; i < 19 && !accettaofferta; i++) {
                int dottore = 1;
                int rand = 0;
                offerta = list.offerta(scelto);
                offertaInt = list.offertaInt(scelto);
                if (i == 5 || i == 8 || i == 11 || i == 14 || i == 17 || i==18) {
                    rand = func.func.rand(9);
                    JOptionPane.showMessageDialog(null, "Driiin!!!");
                    JOptionPane.showMessageDialog(null, "Driiin!!! Driiiiiiin!!");
                    JOptionPane.showMessageDialog(null, "Un offerta del dottore!!");
                    if (rand < 3 || offertaInt < 1000) {
                        dottore = JOptionPane.showConfirmDialog(null, "Vuoi cambiare il tuo pacco?");
                    } else {
                        String[] scelteofferta = {"Accetto l'offerta!", "Rifiuto e vado avanti!", "Guarda i premi rimasti!"};
                        dottore = JOptionPane.showOptionDialog(null, "Vuoi accettare l'offerta di " + offerta + " €?", "Offerta", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, scelteofferta, scelteofferta[0]);
                        while (dottore == 2) {
                            String premi = list.getPremi();
                            JOptionPane.showMessageDialog(null, premi);
                            dottore = JOptionPane.showOptionDialog(null, "Vuoi accettare l'offerta di " + offerta + " €?", "Offerta", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, scelteofferta, scelteofferta[0]);
                        }
                    }
                }
                if (dottore == 0) {
                    if (rand < 3 || offertaInt < 1000) {
                        pacchi = list.getPacchi();
                        elenco = list.getLista();
                        int cambio = JOptionPane.showOptionDialog(null, "Con che pacco vuoi cambiare??\n\n" + elenco + "\n\n", "Cambio pacco", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, pacchi, pacchi[0]);
                        cambio = Integer.parseInt(pacchi[cambio]);
                        Pacco cambiato = list.getPacco(cambio);
                        scelto.cambia(cambiato, list);
                        cambiato.setVisibile(true);
                        scelto.setVisibile(false);
                    } else {
                        accettaofferta = true;
                    }
                }
                if (!accettaofferta) {
                    elenco = list.getLista();
                    pacchi = list.getPacchi();
                    int apri = JOptionPane.showOptionDialog(null, "Che pacco vuoi aprire??\n\n" + elenco + "\n\n", "Scegli il pacco", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, pacchi, pacchi[0]);
                    int paccoaperto = Integer.parseInt(pacchi[apri]);
                    Pacco aperto = list.getPacco(paccoaperto);
                    if (i == 18) {
                        JOptionPane.showMessageDialog(null, "Ok, ultimo pacco. Piano...piano..");
                        JOptionPane.showMessageDialog(null, "Scavicchi ma non apra!!!");
                    }
                    JOptionPane.showMessageDialog(null, "Hai aperto il pacco " + paccoaperto + " " + aperto.getRegione() + " che conteneva " + aperto.getPremio());
                    aperto.setVisibile(false);
                    list.delPacco(aperto, 1);
                    String elencopremi = list.getPremi();
                    if (i < 18) {
                        JOptionPane.showMessageDialog(null, elencopremi);
                    }
                }
            }
            if (!accettaofferta) {
                JOptionPane.showMessageDialog(null, "Complimenti " + nome + " hai vinto " + scelto.getPremio());
                elencovincite=elencovincite+scelto.getPremio()+"\n";
            } else {
                JOptionPane.showMessageDialog(null, "Complimenti " + nome + " hai vinto " + offerta + " €, avresti vinto " + scelto.getPremio());
                elencovincite=elencovincite+offerta+" €\n";
            }
            contagiocate++;
            continua = JOptionPane.showConfirmDialog(null, "Vuoi giocare ancora?");
        }
        JOptionPane.showMessageDialog(null, nome+" hai giocato con noi per "+contagiocate+" volte.\nEcco l'elenco dei premi che hai vinto:\n"+elencovincite);
    }
}
